You can interact with this notebook online: Launch notebook
Quickstart for TARDIS¶
Every simulation run requires atomic data and a configuration file.
Atomic Data¶
We recommend using the kurucz_cd23_chianti_H_He.h5 dataset.
[1]:
from tardis.io.atom_data import download_atom_data
[2]:
download_atom_data('kurucz_cd23_chianti_H_He')
Atomic Data kurucz_cd23_chianti_H_He already exists in /home/runner/Downloads/tardis-data/kurucz_cd23_chianti_H_He.h5. Will not download - override with force_download=True.
You can also obtain a copy of the atomic data from the tardis-regression-data repository.
Example Configuration File¶
The configuration file tardis_example.yml is used throughout this Quickstart.
[3]:
!wget -q -nc https://raw.githubusercontent.com/tardis-sn/tardis/master/docs/tardis_example.yml
[4]:
!cat tardis_example.yml
# Example YAML configuration for TARDIS
tardis_config_version: v1.0
supernova:
luminosity_requested: 9.44 log_lsun
time_explosion: 13 day
atom_data: kurucz_cd23_chianti_H_He.h5
model:
structure:
type: specific
velocity:
start: 1.1e4 km/s
stop: 20000 km/s
num: 20
density:
type: branch85_w7
abundances:
type: uniform
O: 0.19
Mg: 0.03
Si: 0.52
S: 0.19
Ar: 0.04
Ca: 0.03
plasma:
disable_electron_scattering: no
ionization: lte
excitation: lte
radiative_rates_type: dilute-blackbody
line_interaction_type: macroatom
montecarlo:
seed: 23111963
no_of_packets: 4.0e+4
iterations: 20
nthreads: 1
last_no_of_packets: 1.e+5
no_of_virtual_packets: 10
convergence_strategy:
type: damped
damping_constant: 1.0
threshold: 0.05
fraction: 0.8
hold_iterations: 3
t_inner:
damping_constant: 0.5
spectrum:
start: 500 angstrom
stop: 20000 angstrom
num: 10000
Running the Simulation¶
To run the simulation, import the run_tardis function and create the sim object.
[5]:
from tardis import run_tardis
Note:
Get more information about the progress bars, logging configuration, and convergence plots.
[6]:
sim = run_tardis("tardis_example.yml",
virtual_packet_logging=True,
show_convergence_plots=True,
export_convergence_plots=True,
log_level="INFO")
tardis.io.model.parse_atom_data [INFO]
Reading Atomic Data from kurucz_cd23_chianti_H_He.h5 (parse_atom_data.py:40)
tardis.io.atom_data.util [INFO]
Atom Data kurucz_cd23_chianti_H_He.h5 not found in local path.
Exists in TARDIS Data repo /home/runner/Downloads/tardis-data/kurucz_cd23_chianti_H_He.h5 (util.py:34)
tardis.io.atom_data.base [INFO] Reading Atom Data with: UUID = 6f7b09e887a311e7a06b246e96350010 MD5 = 864f1753714343c41f99cb065710cace (base.py:258)
tardis.io.atom_data.base [INFO] Non provided Atomic Data: synpp_refs, photoionization_data, yg_data, two_photon_data, linelist_atoms, linelist_molecules (base.py:262)
tardis.io.model.parse_density_configuration [WARNING] Number of density points larger than number of shells. Assuming inner point irrelevant (parse_density_configuration.py:114)
tardis.model.matter.decay [INFO] Decaying abundances for 1123200.0 seconds (decay.py:101)
tardis.simulation.base [INFO]
Starting iteration 1 of 20 (base.py:444)
py.warnings [WARNING] /home/runner/work/tardis/tardis/tardis/transport/montecarlo/montecarlo_main_loop.py:123: NumbaTypeSafetyWarning:
unsafe cast from uint64 to int64. Precision may be lost.
(warnings.py:112)
tardis.simulation.base [INFO]
Luminosity emitted = 7.940e+42 erg / s
Luminosity absorbed = 2.660e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:639)
tardis.simulation.base [INFO]
Plasma stratification: (base.py:631)
tardis.simulation.base [INFO]
Shell No. t_rad next_t_rad w next_w
0 9.93e+03 K 1.01e+04 K 0.4 0.507
5 9.85e+03 K 1.02e+04 K 0.211 0.197
10 9.78e+03 K 1.01e+04 K 0.143 0.117
15 9.71e+03 K 9.88e+03 K 0.105 0.0868
(base.py:632)
tardis.simulation.base [INFO]
Current t_inner = 9933.952 K
Expected t_inner for next iteration = 10703.881 K
(base.py:634)
tardis.simulation.base [INFO]
Starting iteration 2 of 20 (base.py:444)
tardis.simulation.base [INFO]
Luminosity emitted = 1.072e+43 erg / s
Luminosity absorbed = 3.571e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:639)
tardis.simulation.base [INFO]
Plasma stratification: (base.py:631)
tardis.simulation.base [INFO]
Shell No. t_rad next_t_rad w next_w
0 1.01e+04 K 1.08e+04 K 0.507 0.527
5 1.02e+04 K 1.1e+04 K 0.197 0.201
10 1.01e+04 K 1.08e+04 K 0.117 0.124
15 9.88e+03 K 1.05e+04 K 0.0868 0.0934
(base.py:632)
tardis.simulation.base [INFO]
Current t_inner = 10703.881 K
Expected t_inner for next iteration = 10672.215 K
(base.py:634)
tardis.simulation.base [INFO]
Starting iteration 3 of 20 (base.py:444)
tardis.simulation.base [INFO]
Luminosity emitted = 1.073e+43 erg / s
Luminosity absorbed = 3.395e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:639)
tardis.simulation.base [INFO] Iteration converged 1/4 consecutive times. (base.py:260)
tardis.simulation.base [INFO]
Plasma stratification: (base.py:631)
tardis.simulation.base [INFO]
Shell No. t_rad next_t_rad w next_w
0 1.08e+04 K 1.1e+04 K 0.527 0.485
5 1.1e+04 K 1.12e+04 K 0.201 0.189
10 1.08e+04 K 1.09e+04 K 0.124 0.118
15 1.05e+04 K 1.06e+04 K 0.0934 0.088
(base.py:632)
tardis.simulation.base [INFO]
Current t_inner = 10672.215 K
Expected t_inner for next iteration = 10637.379 K
(base.py:634)
tardis.simulation.base [INFO]
Starting iteration 4 of 20 (base.py:444)
tardis.simulation.base [INFO]
Luminosity emitted = 1.059e+43 erg / s
Luminosity absorbed = 3.356e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:639)
tardis.simulation.base [INFO] Iteration converged 2/4 consecutive times. (base.py:260)
tardis.simulation.base [INFO]
Plasma stratification: (base.py:631)
tardis.simulation.base [INFO]
Shell No. t_rad next_t_rad w next_w
0 1.1e+04 K 1.1e+04 K 0.485 0.474
5 1.12e+04 K 1.12e+04 K 0.189 0.182
10 1.09e+04 K 1.11e+04 K 0.118 0.113
15 1.06e+04 K 1.07e+04 K 0.088 0.0852
(base.py:632)
tardis.simulation.base [INFO]
Current t_inner = 10637.379 K
Expected t_inner for next iteration = 10638.692 K
(base.py:634)
tardis.simulation.base [INFO]
Starting iteration 5 of 20 (base.py:444)
tardis.simulation.base [INFO]
Luminosity emitted = 1.056e+43 erg / s
Luminosity absorbed = 3.389e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:639)
tardis.simulation.base [INFO] Iteration converged 3/4 consecutive times. (base.py:260)
tardis.simulation.base [INFO]
Plasma stratification: (base.py:631)
tardis.simulation.base [INFO]
Shell No. t_rad next_t_rad w next_w
0 1.1e+04 K 1.1e+04 K 0.474 0.481
5 1.12e+04 K 1.13e+04 K 0.182 0.179
10 1.11e+04 K 1.1e+04 K 0.113 0.114
15 1.07e+04 K 1.07e+04 K 0.0852 0.0844
(base.py:632)
tardis.simulation.base [INFO]
Current t_inner = 10638.692 K
Expected t_inner for next iteration = 10647.667 K
(base.py:634)
tardis.simulation.base [INFO]
Starting iteration 6 of 20 (base.py:444)
tardis.simulation.base [INFO]
Luminosity emitted = 1.061e+43 erg / s
Luminosity absorbed = 3.391e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:639)
tardis.simulation.base [INFO] Iteration converged 4/4 consecutive times. (base.py:260)
tardis.simulation.base [INFO]
Plasma stratification: (base.py:631)
tardis.simulation.base [INFO]
Shell No. t_rad next_t_rad w next_w
0 1.1e+04 K 1.11e+04 K 0.481 0.469
5 1.13e+04 K 1.12e+04 K 0.179 0.184
10 1.1e+04 K 1.1e+04 K 0.114 0.115
15 1.07e+04 K 1.06e+04 K 0.0844 0.0866
(base.py:632)
tardis.simulation.base [INFO]
Current t_inner = 10647.667 K
Expected t_inner for next iteration = 10644.519 K
(base.py:634)
tardis.simulation.base [INFO]
Starting iteration 7 of 20 (base.py:444)
tardis.simulation.base [INFO]
Luminosity emitted = 1.059e+43 erg / s
Luminosity absorbed = 3.388e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:639)
tardis.simulation.base [INFO] Iteration converged 5/4 consecutive times. (base.py:260)
tardis.simulation.base [INFO]
Plasma stratification: (base.py:631)
tardis.simulation.base [INFO]
Shell No. t_rad next_t_rad w next_w
0 1.11e+04 K 1.11e+04 K 0.469 0.466
5 1.12e+04 K 1.14e+04 K 0.184 0.171
10 1.1e+04 K 1.11e+04 K 0.115 0.11
15 1.06e+04 K 1.07e+04 K 0.0866 0.0854
(base.py:632)
tardis.simulation.base [INFO]
Current t_inner = 10644.519 K
Expected t_inner for next iteration = 10644.372 K
(base.py:634)
tardis.simulation.base [INFO]
Starting iteration 8 of 20 (base.py:444)
tardis.simulation.base [INFO]
Luminosity emitted = 1.062e+43 erg / s
Luminosity absorbed = 3.363e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:639)
tardis.simulation.base [INFO] Iteration converged 6/4 consecutive times. (base.py:260)
tardis.simulation.base [INFO]
Plasma stratification: (base.py:631)
tardis.simulation.base [INFO]
Shell No. t_rad next_t_rad w next_w
0 1.11e+04 K 1.11e+04 K 0.466 0.469
5 1.14e+04 K 1.14e+04 K 0.171 0.176
10 1.11e+04 K 1.11e+04 K 0.11 0.111
15 1.07e+04 K 1.07e+04 K 0.0854 0.0847
(base.py:632)
tardis.simulation.base [INFO]
Current t_inner = 10644.372 K
Expected t_inner for next iteration = 10638.593 K
(base.py:634)
tardis.simulation.base [INFO]
Starting iteration 9 of 20 (base.py:444)
tardis.simulation.base [INFO]
Luminosity emitted = 1.052e+43 erg / s
Luminosity absorbed = 3.425e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:639)
tardis.simulation.base [INFO] Iteration converged 7/4 consecutive times. (base.py:260)
tardis.simulation.base [INFO]
Plasma stratification: (base.py:631)
tardis.simulation.base [INFO]
Shell No. t_rad next_t_rad w next_w
0 1.11e+04 K 1.11e+04 K 0.469 0.467
5 1.14e+04 K 1.15e+04 K 0.176 0.17
10 1.11e+04 K 1.11e+04 K 0.111 0.11
15 1.07e+04 K 1.08e+04 K 0.0847 0.0816
(base.py:632)
tardis.simulation.base [INFO]
Current t_inner = 10638.593 K
Expected t_inner for next iteration = 10657.551 K
(base.py:634)
tardis.simulation.base [INFO]
Starting iteration 10 of 20 (base.py:444)
tardis.simulation.base [INFO]
Luminosity emitted = 1.070e+43 erg / s
Luminosity absorbed = 3.351e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:639)
tardis.simulation.base [INFO] Iteration converged 8/4 consecutive times. (base.py:260)
tardis.simulation.base [INFO]
Plasma stratification: (base.py:631)
tardis.simulation.base [INFO]
Shell No. t_rad next_t_rad w next_w
0 1.11e+04 K 1.1e+04 K 0.467 0.473
5 1.15e+04 K 1.13e+04 K 0.17 0.179
10 1.11e+04 K 1.11e+04 K 0.11 0.113
15 1.08e+04 K 1.06e+04 K 0.0816 0.0873
(base.py:632)
tardis.simulation.base [INFO]
Current t_inner = 10657.551 K
Expected t_inner for next iteration = 10631.142 K
(base.py:634)
tardis.simulation.base [INFO]
Starting iteration 11 of 20 (base.py:444)
tardis.simulation.base [INFO]
Luminosity emitted = 1.054e+43 erg / s
Luminosity absorbed = 3.371e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:639)
tardis.simulation.base [INFO] Iteration converged 9/4 consecutive times. (base.py:260)
tardis.simulation.base [INFO]
Plasma stratification: (base.py:631)
tardis.simulation.base [INFO]
Shell No. t_rad next_t_rad w next_w
0 1.1e+04 K 1.1e+04 K 0.473 0.475
5 1.13e+04 K 1.13e+04 K 0.179 0.179
10 1.11e+04 K 1.1e+04 K 0.113 0.114
15 1.06e+04 K 1.07e+04 K 0.0873 0.0842
(base.py:632)
tardis.simulation.base [INFO]
Current t_inner = 10631.142 K
Expected t_inner for next iteration = 10645.027 K
(base.py:634)
tardis.simulation.base [INFO]
Starting iteration 12 of 20 (base.py:444)
tardis.simulation.base [INFO]
Luminosity emitted = 1.056e+43 erg / s
Luminosity absorbed = 3.417e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:639)
tardis.simulation.base [INFO] Iteration converged 10/4 consecutive times. (base.py:260)
tardis.simulation.base [INFO]
Plasma stratification: (base.py:631)
tardis.simulation.base [INFO]
Shell No. t_rad next_t_rad w next_w
0 1.1e+04 K 1.11e+04 K 0.475 0.462
5 1.13e+04 K 1.13e+04 K 0.179 0.177
10 1.1e+04 K 1.11e+04 K 0.114 0.109
15 1.07e+04 K 1.08e+04 K 0.0842 0.0829
(base.py:632)
tardis.simulation.base [INFO]
Current t_inner = 10645.027 K
Expected t_inner for next iteration = 10652.245 K
(base.py:634)
tardis.simulation.base [INFO]
Starting iteration 13 of 20 (base.py:444)
tardis.simulation.base [INFO]
Luminosity emitted = 1.062e+43 erg / s
Luminosity absorbed = 3.398e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:639)
tardis.simulation.base [INFO] Iteration converged 11/4 consecutive times. (base.py:260)
tardis.simulation.base [INFO]
Plasma stratification: (base.py:631)
tardis.simulation.base [INFO]
Shell No. t_rad next_t_rad w next_w
0 1.11e+04 K 1.11e+04 K 0.462 0.467
5 1.13e+04 K 1.13e+04 K 0.177 0.178
10 1.11e+04 K 1.11e+04 K 0.109 0.111
15 1.08e+04 K 1.07e+04 K 0.0829 0.0847
(base.py:632)
tardis.simulation.base [INFO]
Current t_inner = 10652.245 K
Expected t_inner for next iteration = 10645.555 K
(base.py:634)
tardis.simulation.base [INFO]
Starting iteration 14 of 20 (base.py:444)
tardis.simulation.base [INFO]
Luminosity emitted = 1.060e+43 erg / s
Luminosity absorbed = 3.383e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:639)
tardis.simulation.base [INFO] Iteration converged 12/4 consecutive times. (base.py:260)
tardis.simulation.base [INFO]
Plasma stratification: (base.py:631)
tardis.simulation.base [INFO]
Shell No. t_rad next_t_rad w next_w
0 1.11e+04 K 1.11e+04 K 0.467 0.469
5 1.13e+04 K 1.13e+04 K 0.178 0.183
10 1.11e+04 K 1.1e+04 K 0.111 0.115
15 1.07e+04 K 1.06e+04 K 0.0847 0.0868
(base.py:632)
tardis.simulation.base [INFO]
Current t_inner = 10645.555 K
Expected t_inner for next iteration = 10643.346 K
(base.py:634)
tardis.simulation.base [INFO]
Starting iteration 15 of 20 (base.py:444)
tardis.simulation.base [INFO]
Luminosity emitted = 1.058e+43 erg / s
Luminosity absorbed = 3.392e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:639)
tardis.simulation.base [INFO] Iteration converged 13/4 consecutive times. (base.py:260)
tardis.simulation.base [INFO]
Plasma stratification: (base.py:631)
tardis.simulation.base [INFO]
Shell No. t_rad next_t_rad w next_w
0 1.11e+04 K 1.1e+04 K 0.469 0.486
5 1.13e+04 K 1.13e+04 K 0.183 0.18
10 1.1e+04 K 1.11e+04 K 0.115 0.112
15 1.06e+04 K 1.07e+04 K 0.0868 0.0846
(base.py:632)
tardis.simulation.base [INFO]
Current t_inner = 10643.346 K
Expected t_inner for next iteration = 10646.730 K
(base.py:634)
tardis.simulation.base [INFO]
Starting iteration 16 of 20 (base.py:444)
tardis.simulation.base [INFO]
Luminosity emitted = 1.056e+43 erg / s
Luminosity absorbed = 3.432e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:639)
tardis.simulation.base [INFO] Iteration converged 14/4 consecutive times. (base.py:260)
tardis.simulation.base [INFO]
Plasma stratification: (base.py:631)
tardis.simulation.base [INFO]
Shell No. t_rad next_t_rad w next_w
0 1.1e+04 K 1.1e+04 K 0.486 0.482
5 1.13e+04 K 1.14e+04 K 0.18 0.174
10 1.11e+04 K 1.11e+04 K 0.112 0.111
15 1.07e+04 K 1.08e+04 K 0.0846 0.082
(base.py:632)
tardis.simulation.base [INFO]
Current t_inner = 10646.730 K
Expected t_inner for next iteration = 10655.832 K
(base.py:634)
tardis.simulation.base [INFO]
Starting iteration 17 of 20 (base.py:444)
tardis.simulation.base [INFO]
Luminosity emitted = 1.065e+43 erg / s
Luminosity absorbed = 3.390e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:639)
tardis.simulation.base [INFO] Iteration converged 15/4 consecutive times. (base.py:260)
tardis.simulation.base [INFO]
Plasma stratification: (base.py:631)
tardis.simulation.base [INFO]
Shell No. t_rad next_t_rad w next_w
0 1.1e+04 K 1.11e+04 K 0.482 0.468
5 1.14e+04 K 1.14e+04 K 0.174 0.174
10 1.11e+04 K 1.12e+04 K 0.111 0.108
15 1.08e+04 K 1.08e+04 K 0.082 0.0826
(base.py:632)
tardis.simulation.base [INFO]
Current t_inner = 10655.832 K
Expected t_inner for next iteration = 10641.369 K
(base.py:634)
tardis.simulation.base [INFO]
Starting iteration 18 of 20 (base.py:444)
tardis.simulation.base [INFO]
Luminosity emitted = 1.060e+43 erg / s
Luminosity absorbed = 3.358e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:639)
tardis.simulation.base [INFO] Iteration converged 16/4 consecutive times. (base.py:260)
tardis.simulation.base [INFO]
Plasma stratification: (base.py:631)
tardis.simulation.base [INFO]
Shell No. t_rad next_t_rad w next_w
0 1.11e+04 K 1.11e+04 K 0.468 0.464
5 1.14e+04 K 1.14e+04 K 0.174 0.175
10 1.12e+04 K 1.11e+04 K 0.108 0.112
15 1.08e+04 K 1.07e+04 K 0.0826 0.0838
(base.py:632)
tardis.simulation.base [INFO]
Current t_inner = 10641.369 K
Expected t_inner for next iteration = 10638.369 K
(base.py:634)
tardis.simulation.base [INFO]
Starting iteration 19 of 20 (base.py:444)
tardis.simulation.base [INFO]
Luminosity emitted = 1.054e+43 erg / s
Luminosity absorbed = 3.404e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:639)
tardis.simulation.base [INFO] Iteration converged 17/4 consecutive times. (base.py:260)
tardis.simulation.base [INFO]
Plasma stratification: (base.py:631)
tardis.simulation.base [INFO]
Shell No. t_rad next_t_rad w next_w
0 1.11e+04 K 1.11e+04 K 0.464 0.465
5 1.14e+04 K 1.14e+04 K 0.175 0.171
10 1.11e+04 K 1.11e+04 K 0.112 0.109
15 1.07e+04 K 1.07e+04 K 0.0838 0.084
(base.py:632)
tardis.simulation.base [INFO]
Current t_inner = 10638.369 K
Expected t_inner for next iteration = 10651.597 K
(base.py:634)
tardis.simulation.base [INFO]
Simulation finished in 19 iterations
Simulation took 66.26 s
(base.py:542)
tardis.simulation.base [INFO]
Starting iteration 20 of 20 (base.py:444)
tardis.simulation.base [INFO]
Luminosity emitted = 1.061e+43 erg / s
Luminosity absorbed = 3.401e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:639)
Plotting the Spectrum¶
Finally, plot the generated spectrum with matplotlib.
[7]:
import matplotlib.pyplot as plt
[8]:
spectrum = sim.spectrum_solver.spectrum_real_packets
spectrum_virtual = sim.spectrum_solver.spectrum_virtual_packets
spectrum_integrated = sim.spectrum_solver.spectrum_integrated
py.warnings [WARNING] /home/runner/work/tardis/tardis/tardis/spectrum/formal_integral.py:398: UserWarning:
The number of interpolate_shells was not specified. The value was set to 80.
(warnings.py:112)
[9]:
%matplotlib inline
plt.figure(figsize=(10, 6.5))
spectrum.plot(label="Normal packets")
spectrum_virtual.plot(label="Virtual packets")
spectrum_integrated.plot(label='Formal integral')
plt.xlim(500, 9000)
plt.title("TARDIS example model spectrum")
plt.xlabel("Wavelength [$\AA$]")
plt.ylabel("Luminosity density [erg/s/$\AA$]")
plt.legend()
plt.show()
py.warnings [WARNING] <>:10: SyntaxWarning:
invalid escape sequence '\A'
(warnings.py:112)
py.warnings [WARNING] <>:11: SyntaxWarning:
invalid escape sequence '\A'
(warnings.py:112)
py.warnings [WARNING] <>:10: SyntaxWarning:
invalid escape sequence '\A'
(warnings.py:112)
py.warnings [WARNING] <>:11: SyntaxWarning:
invalid escape sequence '\A'
(warnings.py:112)
py.warnings [WARNING] /tmp/ipykernel_4727/3606673508.py:10: SyntaxWarning:
invalid escape sequence '\A'
(warnings.py:112)
py.warnings [WARNING] /tmp/ipykernel_4727/3606673508.py:11: SyntaxWarning:
invalid escape sequence '\A'
(warnings.py:112)
[ ]: